// 引入vuex
import store from '@/stores'

/**
 * @APP热更新
 * @用户端版本号字典值  dict_user_app_download
 * @步骤一 ： 比对服务端版本与APP版本是否匹配， 是 无需更新   否 需要更新
 * @步骤二 ： 更新分为两种 强制更新(有SDK或原生组件)  静默更新
 * @步骤三 ： 下载包更新  
 * @注意   :  注意条件编译  应为它是运行在APP中的 小程序及 H5 等平台是没有 HTML5+ 扩展规范的 
 *            否则运行到h5、小程序等平台会出现 plus is not defined 错误
 */

// #ifdef APP-PLUS  
let downloadNum = 0,
	showLoading = null;
var versionInfo = {}
let getSystemInfo = uni.getSystemInfoSync()
const os = uni.getSystemInfoSync().osName;
export function APP_UPdata() {
	plus.runtime.getProperty(plus.runtime.appid, (widgetInfo) => {
		dictData({
			dictType: "dict_agent_app_download"
		}).then(res => {
			// console.log("热更新", res)
			versionInfo = res.data.itemMap.dict_agent_app_download
			// console.log("数据库版本",versionInfo,"当前版本",widgetInfo.version)
			//  比较版本是否不同 当前版本：widgetInfo.version
			const localVersion = widgetInfo.version.split('.');
			// 默认是同一个版本，不需要更新
			let flag = false;
			if (os == 'ios') {
				flag = compareVersion(versionInfo.iso_max_version, widgetInfo.version)
			} else if (os == 'android') {
				flag = compareVersion(versionInfo.max_version, widgetInfo.version)
			}
			console.log("flag",flag)
			if (flag) {
				// 有SDK等原生组件更新需要强制更新
				if (os == 'ios') {
					if (versionInfo.ios_up_type == "apk") {
						store.state.updateApk = versionInfo
					} else {
						store.state.updateApk = {}
						// 静默更新
						doUpData();
					}
				}else if(os == 'android'){
					if (versionInfo.up_type == "apk") {
						store.state.updateApk = versionInfo
					} else {
						store.state.updateApk = {}
						// 静默更新
						doUpData();
					}
				}
			}
		})
	});
}

export function otherUpData() {
	// 整包
	switch (uni.getSystemInfoSync().platform) {
		case 'android':
			// 安卓打开网页下载
			plus.runtime.openUrl(versionInfo.android_href);
			break;
		case 'ios':
			// ios打开应用商店
			var appleId = "123456";
			plus.runtime.launchApplication({
				action: `itms-apps://itunes.apple.com/cn/app/id${appleId}?mt=8`
			},
				function (e) {
					plus.runtime.openUrl();
				}
			);
			break;
	}
}

export function doUpData() {
	// plus.nativeUI.showWaiting('更新升级中……');
	let tmpPkgUrl = versionInfo.android_hot
	const downloadTask = uni.downloadFile({
		// 执行下载
		url: tmpPkgUrl, // 下载地址
		timeout: 1000 * 30, // 30秒超时时间
		success: downloadResult => {
			// 下载成功
			// plus.nativeUI.closeWaiting();
			if (downloadResult.statusCode == 200) {
				plus.runtime.install(
					// 安装软件
					downloadResult.tempFilePath, {
					force: true
				},
					function (res) {
						plus.runtime.restart();
					}
				);
			}
		},
		fail: err => {
			// plus.nativeUI.closeWaiting();
			otherUpData()
		}
	});
}

function compareVersion(ver1, ver2) {
	let v1 = ver1.split('.')
	let v2 = ver2.split('.')
	let len = Math.max(v1.length, v2.length)

	for (let i = 0; i < len; i++) {
		let num1 = parseInt(v1[i] || 0)
		let num2 = parseInt(v2[i] || 0)
		if (num1 > num2) {
			return true
		} else if (num1 < num2) {
			return false
		}
	}
	return false
}

// #endif

